package com.ocean.courtyard.core.datasource.mapper;

import com.ocean.courtyard.entity.CourtyardHome;
import org.apache.ibatis.annotations.Param;

public interface WorldMapper {

    void initializeCourtyardHome();

    void initializeCourtyardAllow();

    /**
     * 添加一个家园
     *
     * @param home 家园信息
     */
    void addHome(@Param("home") CourtyardHome home);

    /**
     * 获取用户家园数量
     *
     * @param name 用户名
     * @return 结果
     */
    Integer getHomeNumber(@Param("name") String name);

    /**
     * 获取用户家园信息
     *
     * @param name 用户名
     * @return 结果
     */
    CourtyardHome getHome(@Param("name") String name);

    /**
     * 添加玩家到家园
     *
     * @param homeId 家园ID
     * @param name   目标玩家
     */
    void addPlayerToHome(@Param("homeId") Long homeId, @Param("name") String name);

    /**
     * 检查玩家是否已经在某个家园中
     *
     * @param homeId     家园ID
     * @param targetName 用户
     * @return 结果
     */
    Integer checkPlayerExists(@Param("homeId") Long homeId, @Param("targetName") String targetName);

    /**
     * 设置家园tp点
     *
     * @param username 用户名
     * @param x        x
     * @param y        y
     * @param z        z
     */
    void tpSet(@Param("username") String username, @Param("x") double x, @Param("y") double y, @Param("z") double z);

    /**
     * 获取家园信息，根据世界名称
     *
     * @param worldName 世界名称
     * @return 结果
     */
    CourtyardHome getHomeByWorldName(@Param("worldName") String worldName);

    /**
     * 获取家园的成员数量
     *
     * @param homeId 家园ID
     * @return 结果
     */
    Integer getPlayerAllowCount(@Param("homeId") Long homeId);
}
